#ifndef SOLUTION_H_
#define SOLUTION_H_
class Solution 
{
public:
    bool isMatch(const char *s, const char *p)
	{
        // Start typing your C/C++ solution below
        // DO NOT write int main() function   
		if(!s || !p)
			return false;

		if(!*p)
			return !*s;

		if(*(p+1) == '*')
		{
			if(*p =='.')
			{
				while(!isMatch(s,p+2) && *s)
					s++;
				return *s?true:isMatch(s,p+2);
			}
			else
			{
				while(!isMatch(s,p+2) && (*s == *p))
					s++;

				return (*s==*p)?true:isMatch(s,p+2);
			}
		}
		else
		{
			if(*p == '.')
				return *s?isMatch(s+1,p+1):false;
			else
				return (*p == *s) && isMatch(s+1,p+1);
		}
        
    }
};
#endif